// pages/scan/scanChina.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        canvasWidth: 0,
        canvasHeight: 0
    },

    startDetect: function (event) {
        let o = event.currentTarget.id
        let that = this //记住在最外层的对象引用
        console.log(o)
        //1.从拍照或相册来选择图片,上传到wx服务器
        wx.chooseImage({
            count: 1,//选一张图片
            sizeType: ['compressed'], //指定默认压缩
            sourceType: [o], //图片来源 相机或是相册
            success: function (photo) { //上传成功回调函数
                let img_file = photo.tempFilePaths[0] //获取图片的路径
                console.log(img_file)
                //2.获取图片的信息
                wx.getImageInfo({
                    src: img_file, //指定要获取图片信息的路径
                    success: function (res) { //res代表图片信息
                        let canvasWidth = res.width
                        let canvasHeight = res.height //原始图片的宽高
                        console.log('原始图片宽:' + canvasWidth + ' 高:' + canvasHeight)
                        //3.计算压缩比
                        let ratio = 2
                        while (canvasWidth > 400 || canvasHeight > 400) {
                            canvasWidth = Math.trunc(res.width / ratio)
                            canvasHeight = Math.trunc(res.height / ratio) //去掉小数
                            ratio++
                        }
                        console.log('压缩比:' + ratio)
                        console.log('压缩后的宽:' + canvasWidth + ' 高' + canvasHeight)
                        that.setData({ //将变量的值绑定到页面中
                            canvasWidth,
                            canvasHeight
                        })
                        //4.在canvas画布上绘制压缩的图片
                        let ctx = wx.createCanvasContext('canvas') //创建画布的上下文
                        ctx.drawImage(res.path, 0, 0, canvasWidth, canvasHeight) //设置绘制图片的位置和大小
                        ctx.draw(false, setTimeout(function () {
                            //5.将绘制好的压缩图片生成一个压缩图片文件
                            wx.canvasToTempFilePath({
                                canvasId: 'canvas', //指定要生成文件的画布
                                desWidth: canvasWidth,
                                desHeight: canvasHeight,//指定生成压缩图片的宽高
                                success: function (res) { //把生成的压缩图片上传wx服务器
                                    console.log('压缩后图片路径:' + res.tempFilePath)
                                    wx.setStorageSync('res_imgurl', res.tempFilePath)
                                    //6.获取压缩图片文件的内容并转换为base64编码
                                    wx.getFileSystemManager().readFile({
                                        filePath: res.tempFilePath,
                                        encoding: 'base64',//默认是二进制的这里用base64
                                        success: function (res_last) { //当成功读取图片
                                            //7.生成一个压缩图片的base64编码
                                            console.log('data:image/jpg;base64,' + res_last.data)
                                            //8.发起http请求
                                            if (res_last.data) {
                                                wx.request({
                                                    url: 'http://192.168.43.164:5000/fish',
                                                    data: { //请求参数,要发给服务器端的数据
                                                        image: res_last.data,
                                                        top_num: 20
                                                    },
                                                    method: 'POST',
                                                    dataType: 'text',//服务端返回的是一个纯文本
                                                    header: {
                                                        'content-type': 'application/x-www-form-urlencoded'
                                                    },
                                                    success: function (res) { //请求响应成功回调success函数
                                                        //拿到识别结果
                                                        let res_data = res.data
                                                        console.log(res_data)
                                                        //把识别结果写入缓存
                                                        wx.setStorageSync('res_data', res_data)
                                                        wx.navigateTo({
                                                            url: '../infoFish/infoFish'
                                                        })
                                                    }
                                                })
                                            }
                                        }
                                    })
                                }
                            })
                        }, 3000))
                    }
                })
            }
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})